/*
 * @Description: websocket 服务器
 * @Author: zhihong deng
 * @Date: 2021-07-06 11:41:45
 * @LastEditors: zhihong deng
 * @LastEditTime: 2021-07-06 23:46:31
 */
const path = require('path')
const fileUtils = require('../utils/file_utils')
const WebSocket = require('ws')
// 创建webSocket服务器的对象，绑定的端口号是8860
const wss = new WebSocket.Server({
  port: 8860
})

// 服务端开启了监听
module.exports.listen = () => {
  // 对客户端的连接事件进行监听
  // client:代表的是客户端的连接socket对象
  wss.on('connection',client => {
    console.log('客户端连接成功了……')
    // 对客户端的连接对象进行message事件监听
    // msg:由客户端发给服务端的数据
    client.on('message',async msg => {
      console.log('客户端发送数据给服务端了：',msg);
      let payload = JSON.parse(msg)
      const action = payload.action
      if(action === 'getData'){
        let filePath = '../data/' + payload.chartName + '.json'
        // payload.chartName//trend、seller、map、hot、stock
        filePath = path.join(__dirname,filePath)
        const ret = await fileUtils.getFileJsonData(filePath)
        // 需要在服务端获取到数据的基础之上，增加一个data的字段
        // data所对应的值，就是某个json文件的内容
        payload.data = ret
        client.send(JSON.stringify(payload))
      }else{
        // 原封不动的将所接收到的数据转发给每一个处于连接状态的客户端
        // wss.client  所有客户端的连接
        wss.clients.forEach(client => {
          client.send(msg)
        });
      }
      // 由服务端向客户端发送数据
      // client.send('hello socket from backend');
    })
  })
}

